Skip to content

字符串方法

string 字符串的增删改查

插入字符串

  • 在原串下标为 pos 的字符前插入字符串

s1.insert(pos,s2)
在 s1 字符串的下标 pos 的位置上插入字符串 s2

s1.insert(pos,s2) 示例代码
cpp
#include<bits/stdc++.h>
using namespace std;
int main()
{
    string s1 = "oldmoon";
	string s2 = "welcome ";
	//在原s1字符串的下标0的位置上插入字符串s2
	s1.insert(0,s2);
	cout << "s1:" << s1 << endl;
    return 0;
}

运行结果:

c
s1:welcome oldmoon

建议

你们试试其他位置呦~

  • 在原串下标为 pos 的字符前插入 n 个字符 char
    s1.insert(pos,n,char) 在 s1 字符串的下标 pos 的位置上插入 n 个字符 char
s1.insert(pos,n,char) 示例代码
cpp
#include<bits/stdc++.h>
using namespace std;
int main()
{
    string s1 = "oldmoon";
	char c = &apos;h&apos;;
	//在原s1字符串的下标0的位置上插入3个字符h
	s1.insert(0,3,c);
	cout << "s1:" << s1 << endl;
    return 0;
}

运行结果:

c
s1:hhholdmoon

建议

你们试试其他位置呦~

  • s2 从下标为 pos2 开始数的 len 个字符插在 s1 串下标为 pos1 的字符位置上 s1.insert(pos1,s2,pos2,len)
    s1.insert(pos1,s2,pos2,len) 示例代码
cpp
#include<bits/stdc++.h>
using namespace std;
int main()
{
    string s1 = "oldmoon";
	string s2 = "hello,world" ;
	//将字符串s2从下标为0的h开始数6个字符,分别是hello, ,插入s1串的下标为0的字符位置上
	s1.insert(0,s2,0,6);
	cout << "s1:" << s1 << endl;
    return 0;
}

运行结果:

c
s1:hello,oldmoon

建议

你们试试其他位置呦~

删除字符串

  • 首先是删除该位置的字符
    s.erase(string:: iterator it);//删除 it 位置的字符
    删除该位置的字符 示例代码
cpp
#include<bits/stdc++.h>
using namespace std;
int main()
{
    string s1 = "oldmoon";
	//删除第4个位置上的字符
	s1.erase(s1.begin() + 4);
	cout << "s1:" << s1 << endl;
    return 0;
}

运行结果:

c
s1:oldmom

分析

s1.begin()函数返回一个迭代器,指向字符串的第 1 个元素,s1.begin() + 4 指向字符串中的第 4 个元素。

  • 删除一段的内容
    s.erase(s.first,s.last)
    删除 first-last 之间的所有元素
    删除一段的内容 示例代码
cpp
#include<bits/stdc++.h>
using namespace std;
int main()
{
    string s1 = "oldmoon";
	//删除从第3个位置开始到最后的中间所有字符串
	s1.erase(s1.begin() + 3,s1.end());
	cout << "s1:" << s1 << endl;
    return 0;
}

运行结果:

c
s1:old

注意

默认第 0 个位置开始数起!

  • 删除某位置后一段长度的元素 s.erase(int a,int n)
删除某位置后一段长度的元素 示例代码
cpp
#include<bits/stdc++.h>
using namespace std;
int main()
{
    string s1 = "oldmoon";
	//删除从下标3开始的4个字符
	s1.erase(3,4);
	cout << "s1:" << s1 << endl;
    return 0;
}

运行结果:

c
s1:old

注意

这里的参数是 int 类型,可以对比下前面的删除方式~
可以挑选一种你喜欢的方式呦~

提取子字符串

s.substr(pos, len)
在 s 字符串中提取从 pos 开始的 len 个字符,pos 默认是 0,len 默认值是 s.size()-pos,即不加参数会默认拷贝整个 s。

提取子字符串 示例代码
cpp
#include<bits/stdc++.h>
using namespace std;
int main()
{
    string s1 = "oldmoon";
	//在s1字符串中提取整个字符串赋值给s2
	string s2 = s1.substr();
	//在s1字符串中提取从下标3开始长度为4的子字符串赋值给s3
	string s3 = s1.substr(3,4);
	////在s1字符串中提取从下标2开始到尾的字符串赋值给s4
	string s4 = s1.substr(2);
	cout << "s1:" << s1 << endl;
	cout << "s2:" << s2 << endl;
	cout << "s3:" << s3 << endl;
	cout << "s4:" << s4 << endl;
    return 0;
}

运行结果:

c
s1:oldmoon
s2:oldmoon
s3:moom
s4:dmoom

建议

快去试试吧~

字符串查找

find() 函数用于在 string 字符串中查找子字符串出现的位置,返回值为第一次出现子串的下标值,找不到返回-1。

字符串查找 示例代码
cpp
#include<bits/stdc++.h>
using namespace std;
int main()
{
    string s1 = "oldmoon";
	int pos = s1.find("mo");
	cout << pos << endl;
	pos = s1.find("123");
	cout << pos << endl;
    return 0;
}

运行结果:

c
3
-1

分析

第一次出现"mo"这个子串的下标是 3,所以打印 3
s1 串中无子串"123",所以打印-1

string 其他常用函数

常用函数

  • size()/length()
  • substr()
  • replace()
  • atoi()
  • tolower()
  • toupper()
  • size()/length() 返回字符的个数
字符串查找 示例代码
cpp
#include<bits/stdc++.h>
using namespace std;
int main()
{
    string s = "oldmoon";
	cout << s.size() << endl;
	cout << s.length() << endl;
    return 0;
}

运行结果:

c
6
6
  • substr(num) 返回从 num 下标开始的所有字符,包括 num 下标对应的字符
substr(num) 示例代码
cpp
#include<bits/stdc++.h>
using namespace std;
int main()
{
    string s1 = "oldmoon";
	string s2 = s1.substr(3);
	cout << s2 << endl;
    return 0;
}

运行结果:

c
moon

分析

提取了 s1 字符串中从下标 3 开始到末尾得字符串给了 s2

  • substr(a,b) 返回从 a 下标开始的 b 个字符,包括 a 下标对应的字符
substr(a,b) 示例代码
cpp
#include<bits/stdc++.h>
using namespace std;
int main()
{
    string s1 = "oldmoon";
	string s2 = s1.substr(3,4);
	cout << s2 << endl;
    return 0;
}

运行结果:

c
moon

分析

提取了 s1 字符串中从下标 3 开始得 4 个字符给了 s2

  • replace(pos,num,str) 从下标 pos 开始得 num 个字符替换成 str
replace(pos,num,str) 示例代码
cpp
#include<bits/stdc++.h>
using namespace std;
int main()
{
    string s1 = "hello,oldmoon";
	string s2 = s1.replace(0,5,"welcome");
	cout << s2 << endl;
    return 0;
}

运行结果:

c
welcome,oldmoon

分析

s1 字符串中下标 01 是'h',往后 5 个字符即“hello”,替换成“welcome”

  • stoi(str) 将数字字符串转成对应整数
stoi(str) 示例代码
cpp
#include<bits/stdc++.h>
using namespace std;
int main()
{
    cout << stoi("1") + stoi("1") << endl;
    return 0;
}

运行结果:

c
12345

分析

将字符串“12345”转成数字 12345,在字符串操作中还是很重要得~

  • tolower() 将大写字母转成小写
tolower() 示例代码
cpp
#include<bits/stdc++.h>
using namespace std;
int main()
{
    char s = &apos;A&apos; ;
	printf("%c",tolower(s));
    return 0;
}

运行结果:

c
a
  • toupper() 将小写字母转成大写
toupper() 示例代码
cpp
#include<bits/stdc++.h>
using namespace std;
int main()
{
    char s = &apos;a&apos; ;
	printf("%c",toupper(s));
    return 0;
}

运行结果:

c
A